/// 主动学习对话系统演示
/// 
/// 特点：
/// 1. 不依赖预训练数据
/// 2. 从对话中主动学习知识
/// 3. 构建动态知识图谱
/// 4. 使用推理链进行逻辑推理
/// 5. 遇到未知会主动询问

use neurosymbolic_ai::ActiveLearningDialogue;
use std::io::{self, Write};

fn main() {
    println!("╔════════════════════════════════════════════════════════════╗");
    println!("║          主动学习AI对话系统                               ║");
    println!("║     Active Learning Dialogue System                      ║");
    println!("║                                                           ║");
    println!("║     特点：                                                 ║");
    println!("║     • 从零开始学习，无需预训练数据                         ║");
    println!("║     • 主动提问，好奇心驱动                                 ║");
    println!("║     • 逻辑推理链                                           ║");
    println!("║     • 动态知识图谱                                         ║");
    println!("╚════════════════════════════════════════════════════════════╝\n");

    let mut dialogue = ActiveLearningDialogue::new();

    println!("💡 使用指南:");
    println!("  1. 直接和AI聊天");
    println!("  2. 教它知识：\"X是Y\" 或 \"X就是Y\"");
    println!("  3. 输入 'reflect' 让AI自我反思");
    println!("  4. 输入 'knowledge' 查看AI学到的知识");
    println!("  5. 输入 'save' 保存知识图谱");
    println!("  6. 输入 'quit' 退出\n");

    println!("🎯 AI现在什么都不知道，开始教它吧！\n");

    loop {
        print!("👤 您: ");
        io::stdout().flush().unwrap();

        let mut input = String::new();
        if io::stdin().read_line(&mut input).is_err() {
            println!("输入错误，请重试");
            continue;
        }

        let input = input.trim();

        if input.is_empty() {
            continue;
        }

        // 特殊命令
        match input {
            "quit" | "exit" => {
                println!("\n🤖 AI: 谢谢你教了我这么多！再见！");
                println!("\n最终知识图谱:");
                for line in dialogue.export_knowledge() {
                    println!("{}", line);
                }
                break;
            }
            "reflect" => {
                dialogue.self_reflect();
                continue;
            }
            "knowledge" => {
                println!("\n{}", "=".repeat(60));
                println!("AI当前掌握的知识:");
                println!("{}", "=".repeat(60));
                for line in dialogue.export_knowledge() {
                    println!("{}", line);
                }
                println!("{}", "=".repeat(60));
                println!();
                continue;
            }
            "save" => {
                match dialogue.save_knowledge("knowledge_graph.txt") {
                    Ok(_) => println!("✅ 知识图谱已保存到 knowledge_graph.txt"),
                    Err(e) => println!("❌ 保存失败: {}", e),
                }
                continue;
            }
            "clear" => {
                dialogue.clear_history();
                print!("\x1B[2J\x1B[1;1H");
                println!("✅ 对话历史已清除\n");
                continue;
            }
            "help" => {
                println!("\n可用命令:");
                println!("  reflect    - AI进行自我反思和推理");
                println!("  knowledge  - 查看AI学到的知识");
                println!("  save       - 保存知识图谱");
                println!("  clear      - 清除对话历史");
                println!("  help       - 显示帮助");
                println!("  quit/exit  - 退出\n");
                continue;
            }
            _ => {}
        }

        // 正常对话
        dialogue.chat(input);
    }
}

